/**
 * 页面辅助类
 */

/**
 * 显示繁忙提示
 * @param {string} title 提示文字
 */
function showBusy(title = '处理中...') {
    wx.showLoading({
        title,
        mask: true
    });
}

/**
 * 显示成功提示
 * @param {string} title 提示文字
 * @param {number} duration 显示时长
 */
function showSuccess(title = '操作成功', duration = 1500) {
    wx.showToast({
        title,
        icon: 'success',
        duration
    });
}

/**
 * 显示失败提示
 * @param {string} title 提示文字
 * @param {number} duration 显示时长
 */
function showError(title = '操作失败', duration = 1500) {
    wx.showToast({
        title,
        icon: 'error',
        duration
    });
}

/**
 * 隐藏提示
 */
function hideLoading() {
    wx.hideLoading();
}

/**
 * 显示模态确认框
 * @param {string} title 标题
 * @param {string} content 内容
 * @param {boolean} showCancel 是否显示取消按钮
 */
function showModal(title, content, showCancel = true) {
    return new Promise((resolve, reject) => {
        wx.showModal({
            title,
            content,
            showCancel,
            success(res) {
                if (res.confirm) {
                    resolve(true);
                } else if (res.cancel) {
                    resolve(false);
                }
            },
            fail() {
                reject(new Error('显示对话框失败'));
            }
        });
    });
}

/**
 * 页面跳转
 * @param {string} url 页面路径
 */
function goto(url) {
    wx.navigateTo({
        url
    });
}

/**
 * 重定向页面
 * @param {string} url 页面路径
 */
function redirect(url) {
    wx.redirectTo({
        url
    });
}

/**
 * 返回上一页
 * @param {number} delta 返回的页面数
 */
function back(delta = 1) {
    wx.navigateBack({
        delta
    });
}

module.exports = {
    showBusy,
    showSuccess,
    showError,
    hideLoading,
    showModal,
    goto,
    redirect,
    back
}; 